﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;

namespace FinanSoft.Entities
{
    [DataContract]
    public class DocDetail
    {
        #region Atributos
        private int _idDocumentoContable;
        private Item _item;
        private StoreRoom _storeRoom;
        private Tax _tax;
        private double _quantity;
        private double _unitCost;
        #endregion

        #region Constructors
        /// <summary>
        /// Constructor de la clase. Recibe 2 parametros para el id del tipo de cta especial y el nombre
        /// </summary>
        public DocDetail(Item item, StoreRoom store, double cantidad, double precio, Tax tax)
        {
            this._item = item;
            this._quantity = cantidad;
            this._storeRoom = store;
            this._unitCost = precio;
            this._tax = tax;
           
        }

        /// <summary>
        /// Constructor de la clase. Recibe 2 parametros para el id del tipo de cta especial y el nombre
        /// </summary>
        public DocDetail(int idDocumento, Item item, StoreRoom store, double cantidad, double precio, Tax tax)
        {
            this._idDocumentoContable = idDocumento;
            this._item = item;
            this._quantity = cantidad;
            this._storeRoom = store;
            this._unitCost = precio;
            this._tax = tax;

        }
        #endregion

        #region Properties
        
        /// <summary>
        /// Artículo asociado al detalle de documento
        /// </summary>
        [DataMember]
        public Item Item
        {
            get { return _item; }
            set{_item = value;}
        }

        /// <summary>
        /// Numero de articulos en el documento
        /// </summary>
        [DataMember]
        public double Quantity
        {
            get { return _quantity; }
            set { _quantity = value; }
        }

        /// <summary>
        /// Bodega donde está el artículo o donde va a entrar
        /// </summary>
        [DataMember]
        public StoreRoom StoreRoom
        {
            get { return _storeRoom; }
            set { _storeRoom = value; }
        }

        /// <summary>
        /// Monto del precio del articulo en el documento
        /// </summary>
        [DataMember]
        public double UnitCost
        {
            get { return _unitCost; }
            set{_unitCost = value;}
        }

        /// <summary>
        /// Abreviatura del tipo de impuesto utilizado
        /// </summary>
        [DataMember]
        public Tax Tax
        {
            get { return _tax; }
            set { _tax = value; }
        }

        /// <summary>
        /// Id del documento contable al cual el artículo pertenece
        /// </summary>
        [DataMember]
        public int IdDocumentoContable
        {
            get { return _idDocumentoContable; }
            set { _idDocumentoContable = value; }
        }
        #endregion
    }
}
